// Generated from code/ch17/Cymbol.g by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { CharStream } from "antlr4ts/CharStream";
import { Lexer } from "antlr4ts/Lexer";
import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator";
import { NotNull } from "antlr4ts/Decorators";
import { Override } from "antlr4ts/Decorators";
import { RuleContext } from "antlr4ts/RuleContext";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";


export class CymbolLexer extends Lexer {
	public static readonly T__0 = 1;
	public static readonly T__1 = 2;
	public static readonly T__2 = 3;
	public static readonly T__3 = 4;
	public static readonly T__4 = 5;
	public static readonly T__5 = 6;
	public static readonly T__6 = 7;
	public static readonly T__7 = 8;
	public static readonly T__8 = 9;
	public static readonly T__9 = 10;
	public static readonly T__10 = 11;
	public static readonly T__11 = 12;
	public static readonly ID = 13;
	public static readonly INT = 14;
	public static readonly WS = 15;
	public static readonly SL_COMMENT = 16;

	// tslint:disable:no-trailing-whitespace
	public static readonly channelNames: string[] = [
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
	];

	// tslint:disable:no-trailing-whitespace
	public static readonly modeNames: string[] = [
		"DEFAULT_MODE",
	];

	public static readonly ruleNames: string[] = [
		"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", 
		"T__9", "T__10", "T__11", "ID", "LETTER", "INT", "WS", "SL_COMMENT",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "'='", "';'", "'('", "')'", "','", "'{'", "'}'", "'return'", 
		"'+'", "'float'", "'int'", "'void'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, "ID", 
		"INT", "WS", "SL_COMMENT",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(CymbolLexer._LITERAL_NAMES, CymbolLexer._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return CymbolLexer.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace


	constructor(input: CharStream) {
		super(input);
		this._interp = new LexerATNSimulator(CymbolLexer._ATN, this);
	}

	// @Override
	public get grammarFileName(): string { return "Cymbol.g"; }

	// @Override
	public get ruleNames(): string[] { return CymbolLexer.ruleNames; }

	// @Override
	public get serializedATN(): string { return CymbolLexer._serializedATN; }

	// @Override
	public get channelNames(): string[] { return CymbolLexer.channelNames; }

	// @Override
	public get modeNames(): string[] { return CymbolLexer.modeNames; }

	public static readonly _serializedATN: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\x12n\b\x01\x04" +
		"\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
		"\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
		"\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
		"\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03\x05\x03\x05\x03\x06" +
		"\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03" +
		"\t\x03\t\x03\n\x03\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03" +
		"\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x07\x0E" +
		"O\n\x0E\f\x0E\x0E\x0ER\v\x0E\x03\x0F\x03\x0F\x03\x10\x06\x10W\n\x10\r" +
		"\x10\x0E\x10X\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12" +
		"\x03\x12\x07\x12c\n\x12\f\x12\x0E\x12f\v\x12\x03\x12\x05\x12i\n\x12\x03" +
		"\x12\x03\x12\x03\x12\x03\x12\x02\x02\x02\x13\x03\x02\x03\x05\x02\x04\x07" +
		"\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15" +
		"\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x02\x1F\x02\x10!\x02" +
		"\x11#\x02\x12\x03\x02\x06\x04\x02C\\c|\x03\x022;\x05\x02\v\f\x0F\x0F\"" +
		"\"\x04\x02\f\f\x0F\x0F\x02q\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02" +
		"\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02" +
		"\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02" +
		"\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02" +
		"\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02" +
		"\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x03%\x03\x02\x02\x02\x05\'" +
		"\x03\x02\x02\x02\x07)\x03\x02\x02\x02\t+\x03\x02\x02\x02\v-\x03\x02\x02" +
		"\x02\r/\x03\x02\x02\x02\x0F1\x03\x02\x02\x02\x113\x03\x02\x02\x02\x13" +
		":\x03\x02\x02\x02\x15<\x03\x02\x02\x02\x17B\x03\x02\x02\x02\x19F\x03\x02" +
		"\x02\x02\x1BK\x03\x02\x02\x02\x1DS\x03\x02\x02\x02\x1FV\x03\x02\x02\x02" +
		"!Z\x03\x02\x02\x02#^\x03\x02\x02\x02%&\x07?\x02\x02&\x04\x03\x02\x02\x02" +
		"\'(\x07=\x02\x02(\x06\x03\x02\x02\x02)*\x07*\x02\x02*\b\x03\x02\x02\x02" +
		"+,\x07+\x02\x02,\n\x03\x02\x02\x02-.\x07.\x02\x02.\f\x03\x02\x02\x02/" +
		"0\x07}\x02\x020\x0E\x03\x02\x02\x0212\x07\x7F\x02\x022\x10\x03\x02\x02" +
		"\x0234\x07t\x02\x0245\x07g\x02\x0256\x07v\x02\x0267\x07w\x02\x0278\x07" +
		"t\x02\x0289\x07p\x02\x029\x12\x03\x02\x02\x02:;\x07-\x02\x02;\x14\x03" +
		"\x02\x02\x02<=\x07h\x02\x02=>\x07n\x02\x02>?\x07q\x02\x02?@\x07c\x02\x02" +
		"@A\x07v\x02\x02A\x16\x03\x02\x02\x02BC\x07k\x02\x02CD\x07p\x02\x02DE\x07" +
		"v\x02\x02E\x18\x03\x02\x02\x02FG\x07x\x02\x02GH\x07q\x02\x02HI\x07k\x02" +
		"\x02IJ\x07f\x02\x02J\x1A\x03\x02\x02\x02KP\x05\x1D\x0F\x02LO\x05\x1D\x0F" +
		"\x02MO\x05\x1F\x10\x02NL\x03\x02\x02\x02NM\x03\x02\x02\x02OR\x03\x02\x02" +
		"\x02PN\x03\x02\x02\x02PQ\x03\x02\x02\x02Q\x1C\x03\x02\x02\x02RP\x03\x02" +
		"\x02\x02ST\t\x02\x02\x02T\x1E\x03\x02\x02\x02UW\t\x03\x02\x02VU\x03\x02" +
		"\x02\x02WX\x03\x02\x02\x02XV\x03\x02\x02\x02XY\x03\x02\x02\x02Y \x03\x02" +
		"\x02\x02Z[\t\x04\x02\x02[\\\x03\x02\x02\x02\\]\b\x11\x02\x02]\"\x03\x02" +
		"\x02\x02^_\x071\x02\x02_`\x071\x02\x02`d\x03\x02\x02\x02ac\n\x05\x02\x02" +
		"ba\x03\x02\x02\x02cf\x03\x02\x02\x02db\x03\x02\x02\x02de\x03\x02\x02\x02" +
		"eh\x03\x02\x02\x02fd\x03\x02\x02\x02gi\x07\x0F\x02\x02hg\x03\x02\x02\x02" +
		"hi\x03\x02\x02\x02ij\x03\x02\x02\x02jk\x07\f\x02\x02kl\x03\x02\x02\x02" +
		"lm\b\x12\x02\x02m$\x03\x02\x02\x02\b\x02NPXdh\x03\b\x02\x02";
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!CymbolLexer.__ATN) {
			CymbolLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(CymbolLexer._serializedATN));
		}

		return CymbolLexer.__ATN;
	}

}

